home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacWorld 1999 July
/
Macworld (1999-07).dmg
/
Shareware World
/
Info
/
For Developers
/
Mops 3.4.sea
/
Mops source
/
Toolbox classes
/
Drvr
< prev
next >
Wrap
Text File
|
1994-05-08
|
2KB
|
67 lines
\ drvr - parameter block for driver interface
\ July 90 mrh Mops version.
\ 8/16/90 rfl close: must call kill: first
Decimal
\ basic parameter block for drivers
:class PBDrvr super{ object }
record
{ 12 Bytes Name \ driver name
12 Bytes Header \ fields for internal use
var IOComp \ i/o completion ptr
int IOResult \ return code
var IONamePtr \ name of drvr
int vRef \ 22
int IORefNum \ 24
int csCode \ 26
int csP1 \ 28
int csP2 \ 30
var IOBuffer
var IOReq
var IOAct
int IOPosMode
var IOOffset
}
:m FCB: \ ( -- fcb-addr )
addr: header ;M
:m NAME: \ ( addr len -- ) Names the driver.
^base 50 erase addr: name >str255 put: ioNamePtr ;m
:m KILL:
addr: header fdos$ a406 ( Killio ) 0 put: IOResult ;m
:m OPEN: \ ( -- fCode )
addr: header 0 (open) ;m
:m CLOSE: \ ( -- fCode )
kill: self drop addr: header (close) ;m
:m READ: \ ( addr len -- fCode ) Reads n bytes via the driver.
addr: header swap rot (read) ;m
:m WRITE: \ ( addr len -- fCode ) Writes n bytes via the driver.
addr: header swap rot (write) ;m
:m READNW: \ ( cfa:proc addr len -- fCode ) No-wait read.
\ Requires a completion PROC.
\ put: IOReq put: IOBuffer put: IOcomp
\ addr: header fcall PBRead,ASYNC ;m
rot -> CPaddr read: self ;m
:m WRITENW: \ ( cfa:proc addr len -- fCode ) No-wait write.
\ put: IOReq +base put: IOBuffer >body +base put: IOComp
\ addr: header fcall PBWrite,ASYNC ;m
rot -> CPaddr write: self ;m
:m BYTESREAD: \ ( -- #bytes ) Returns actual count of bytes read.
get: IOAct ;m
:m RESULT: \ ( -- IOResult ) Returns the current IOResult value.
get: IOResult ;m
;class